{{/* Pages Widget */}}

{{/* Initialise */}}
{{ $ := .root }}
{{ $st := .page }}
{{ $items_type := $st.Params.content.page_type | default "post" }}
{{ $items_offset := $st.Params.content.offset | default 0 }}
{{ $items_count := $st.Params.content.count }}
{{ if eq $items_count 0 }}
  {{ $items_count = 65535 }}
{{ else }}
  {{ $items_count = $items_count | default 5 }}
{{ end }}
{{ $items_sort := $st.Params.content.order | default "desc" }}

{{/* Query */}}
{{ $query := where site.RegularPages "Type" $items_type }}
{{ $archive_page := site.GetPage "Section" $items_type }}

{{/* Filters */}}
{{ if $st.Params.content.filters.tag }}
  {{ $archive_page = site.GetPage (printf "tags/%s" (urlize $st.Params.content.filters.tag)) }}
  {{ $query = $query | intersect $archive_page.Pages }}
{{ end }}
{{ if $st.Params.content.filters.category }}
  {{ $archive_page = site.GetPage (printf "categories/%s" (urlize $st.Params.content.filters.category)) }}
  {{ $query = $query | intersect $archive_page.Pages }}
{{ end }}
{{ if $st.Params.content.filters.publication_type }}
  {{ $archive_page = site.GetPage (printf "publication_types/%s" $st.Params.content.filters.publication_type) }}
  {{ $query = $query | intersect $archive_page.Pages }}
{{ end }}
{{ if $st.Params.content.filters.author }}
  {{ $archive_page = site.GetPage (printf "authors/%s" (urlize $st.Params.content.filters.author)) }}
  {{ $query = $query | intersect $archive_page.Pages }}
{{ end }}
{{ if $st.Params.content.filters.exclude_featured }}
  {{ $query = where $query "Params.featured" "!=" true }}
{{ end }}
{{ if $st.Params.content.filters.exclude_past }}
  {{ $query = where $query "Date" ">=" now }}
{{ end }}
{{ if $st.Params.content.filters.exclude_future }}
  {{ $query = where $query "Date" "<" now }}
{{ end }}

{{ $count := len $query }}

{{/* Sort */}}
{{ $sort_by := "Date" }}
{{ $query = sort $query $sort_by $items_sort }}

{{/* Offset and Limit */}}
{{ if gt $items_offset 0 }}
  {{ $query = first $items_count (after $items_offset $query) }}
{{ else }}
  {{ $query = first $items_count $query }}
{{ end }}

{{/* Localisation */}}
{{ $i18n := "" }}
{{ if eq $items_type "post" }}
  {{ $i18n = "more_posts" }}
{{ else if eq $items_type "talk" }}
  {{ $i18n = "more_talks" }}
{{ else if eq $items_type "publication" }}
  {{ $i18n = "more_publications" }}
{{ else }}
  {{ $i18n = "more_pages" }}
{{ end }}

{{ $columns := $st.Params.design.columns | default "2" }}

<div class="row {{if not $st.Title | or (eq $columns "1") }}justify-content-center{{end}}">
  {{ if $st.Title }}
    {{ if eq $columns "1" }}
      <div class="col-12 col-lg-8 section-heading text-center">
        {{ with $st.Title }}<h1>{{.}}</h1>{{ end }}
        {{ with $st.Params.subtitle }}<p>{{ . | markdownify | emojify }}</p>{{ end }}
      </div>
    {{else}}
      <div class="col-12 col-lg-4 section-heading">
        {{ with $st.Title }}<h1>{{.}}</h1>{{ end }}
        {{ with $st.Params.subtitle }}<p>{{ . | markdownify | emojify }}</p>{{ end }}
      </div>
    {{end}}
  {{ end }}
  <div class="col-12 col-lg-8">

    {{ with $st.Content }}{{ . }}{{ end }}

    {{ range $post := $query }}
      {{ if eq $st.Params.design.view 1 }}
        {{ partial "li_list" . }}
      {{ else if eq $st.Params.design.view 3 }}
        {{ partial "li_card" . }}
      {{ else if eq $st.Params.design.view 4 | and (eq $items_type "publication") }}
        {{ partial "li_citation" . }}
      {{ else }}
        {{ partial "li_compact" . }}
      {{ end }}
    {{end}}

    {{/* Archive link */}}
    {{ $show_archive_link := $st.Params.content.archive.enable | default (gt $count $items_count) }}
    {{ if $show_archive_link }}

      {{ $archive_link := "" }}
      {{ if $st.Params.content.archive.link }}
        {{ $archive_link = $st.Params.content.archive.link | relLangURL }}
      {{ else }}
        {{ $archive_link = $archive_page.RelPermalink }}
      {{ end }}

      {{ $archive_text := $st.Params.content.archive.text | default (i18n $i18n) | default "See all" }}

      <div class="see-all">
        <a href="{{ $archive_link }}">
          {{ $archive_text | emojify }}
          <i class="fas fa-angle-right"></i>
        </a>
      </div>
    {{ end }}

  </div>
</div>
